package com.java.test.system.fundstypemanage;

import com.java.test.system.feesettings.entity.FundsTypeEntity;
import com.java.test.system.fundstypemanage.dto.FundsTypeAddDTO;
import com.java.test.system.fundstypemanage.dto.FundsTypeQueryDTO;
import com.java.test.system.fundstypemanage.dto.FundsTypeUpdateDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class FundsTypeDAO {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    /**
     * 查询
     * @param queryDTO
     * @author 
     * @date 2020/7/15 0015 13:54 
     * @return java.util.List<com.java.test.system.feesettings.entity.FundsTypeEntity>
     */
    public List<FundsTypeEntity> getFundsTypeList(FundsTypeQueryDTO queryDTO) {
        String sql = "SELECT t.* FROM sys_funds_type t";

        List<FundsTypeEntity> list = jdbcTemplate.query(sql, new FundsTypeEntity());

        return list;
    }

    /**
     * 感觉名称查询
     * @param addDTO
     * @author 
     * @date 2020/7/15 0015 13:54 
     * @return com.java.test.system.feesettings.entity.FundsTypeEntity
     */
    public FundsTypeEntity getByGName(FundsTypeAddDTO addDTO) {
        String sql = "SELECT t.* FROM sys_funds_type t where t.name = ?";
        FundsTypeEntity info = null;
        try {
            info= jdbcTemplate.queryForObject(sql, new FundsTypeEntity(),
                    addDTO.getName());
        }catch (EmptyResultDataAccessException e){
            return null;
        }
        return info;
    }

    /**
     * 添加
     * @author 
     * @date 2020/7/15 0015 13:54 
     * @return int
     */
    public int insertSave(FundsTypeAddDTO addDTO) {
        String sql ="insert into sys_funds_type(name,fullName,rate,isDefault,operation,createTime,status) " +
                "values (?,?,?,?,?,?,?)";
        return jdbcTemplate.update(sql,addDTO.getName(),addDTO.getFullName(),addDTO.getRate(),addDTO.getIsDefault(),
                addDTO.getOperation(),addDTO.getCreateTime(),addDTO.getStatus());
    }

    /**
     * 通过id获取
     * @param id
     * @author 
     * @date 2020/7/15 0015 13:54 
     * @return com.java.test.system.feesettings.entity.FundsTypeEntity
     */
    public FundsTypeEntity getById(String id) {
        String sql = "select *  from sys_funds_type where id = ?";
        FundsTypeEntity info = null;
        try {
            info = jdbcTemplate.queryForObject(sql, new FundsTypeEntity(), id);
        }catch (EmptyResultDataAccessException e){
            return null;
        }
        return info;
    }

    /**
     * 修改
     * @param updateDTO
     * @author 
     * @date 2020/7/15 0015 13:54 
     * @return int
     */
    public int updateById(FundsTypeUpdateDTO updateDTO) {
        String sql = "update sys_funds_type " +
                "set  rate = ? , isDefault = ? ,modifyTime = ?, status = ? " +
                "where id = ?";

        return jdbcTemplate.update(sql, updateDTO.getRate(),updateDTO.getIsDefault(),updateDTO.getModifyTime(),updateDTO.getStatus(),updateDTO.getId());
    }

    /**
     * 删除
     * @param id
     * @author 
     * @date 2020/7/15 0015 13:55 
     * @return void
     */
    public void deleteById(String id) {
        String sql ="DELETE FROM sys_funds_type WHERE id = ?";
        jdbcTemplate.update(sql,id);
    }

    /**
     * 修改默认
     * @author 
     * @date 2020/7/15 0015 13:55 
     * @return void
     */
    public void updateByIsDefault() {
        String sql = "update sys_funds_type set  isDefault = 0 ";

        jdbcTemplate.update(sql);
    }

}
